"""
    局部最小值： 无序
    无序数组中，任意两个相邻的数不相等， 
    中间 [i-1]> [i] < [i+1] i
    开头 [0] < [1] 即可 0
    结尾  [end-1]>[end] end
    
    只要能构建排他性的东西就能二分不一定要有序
    
    划分， 不相等， 
    那么排列组合下来一定会出现以上情况,
    
    
"""

def min_local(arr: list):
    if arr == None or len(arr) == 0:
        return -1
    
    if arr[0] < arr[1]:
        return 0
    if arr[len(arr) - 1] < arr[len(arr) - 2]:
        return len(arr) - 1
    left = 1
    right = len(arr) - 2
    mid = 0
    while left < right:
        mid = int((left + right)/2)
        if arr[mid] > arr[mid - 1]:
            right = mid - 1
        elif arr[mid] > arr[mid + 1]:
            left = mid + 1
        else:
            return mid

arr = [5, 2, 5, 3, 2, 3, 6]
z = min_local(arr)
print(z)